first activity如果是自己創建的要註冊 >
androidmanifest.xml
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
創建menu活動>
<item
android:id="@+id/add_item
android:title="add"
/>
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"uclickadd",Toast.LENGTH_LONG).show();
break;
case R.id.remove_item:
Toast.makeText(this,"u click remove",Toast.LENGTH_LONG).show();
break;
default:
}
return true;
}
銷毀menu活動
public void onClick(View v){
finish();
}
///// 顯示intent
創建 secondactivity 然後 <activy></activity>
裡面 <intent-filter> 不用配置
啟動Intent (Context packageContext 啟動活動上下文 ,Class <?>cls 指定想起動目標活動)
Intent intent = new Intent(first.this,second.class);
startActivity(intent);
///隱式intent
有action/category
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" /> //默認的
<category android:name="com.example.activitytest.MY_CATEGORY" />
Intent intent=new Intent("com.example.activity.Action_start");
startActivity(intent);
intent.addCategory("com.example.activitytest.MY_CATEGORY");
Intent intent =new Intent(Intent.ACTION_VIEW); //內置的
intent.setData(Uri.parse("http://www.baidu.com"));
"tel:10086" //電話
可以在 <INTENT-FLITER>
<data android:scheme:"http"/> 篩選
android:scheme / android:host / port / path / mimeType用於指定處理的數據類型
向下一個活動傳遞數據
--first
String data="i love u";
Intent intent=new Intent(first.this,second.class); intent.putExtra("extra_data",data); startActivity(intent);
--second
Intent intent= getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("sencond",data);
返回數據給上一個活動
first
```
Intent intent=new Intent(first.this,second.class);
startActivityForResult(intent,1);
second
```
Button button2=(Button) findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.putExtra("data_return","i hate u");
setResult(+); //第一個參數是返回結果的 第二個參數把有數據的intent傳回去
finish();
}
});
--first
//按鈕案返回時取得結果
@Override
//檢查requestcode判斷數據來源確定數據是second傳的 在通過result判斷是否成功
public void onActivityResult(int requestCode,int resultCode,Intent data) {
switch (requestCode){
case 1:
if (requestCode == RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("first",returnedData);
}
break;
default:
}
--back鍵也能返回數據
public void onBackPressed(){
Intent intent=new Intent();
intent.putExtra("extra_data",data);
setResult(RESULT_OK,intent);
finish();
}
**活動生命週期**
1.運行
2.暫停 不在線頂但是仍可見 EX 對話框(只占螢幕一部分)
3.停止 完全不可見 內存有可能被回收
4.銷毀 回收狀態
onCreate() 第一次創建調用 EX 初始化 載入布局-> onDestroy 銷毀之前調用 *完整生存期
onStart() 不可見>可見 onStop()完全不可見 ->可見生存期
onResume() 用戶進行交互時用 要在頂部 onPause() 重新啟動/恢復時調用
活動是運行狀態的 可和用戶交互 大部分情況下為前台生存期
創建模式
-改變模式 <ACTIVITY android:launchMode="***" />
STANDARD :會重新創建新活動 (默認模式)
singleTOP:創建活動會與頂端活動不重複
singleTask:與所有活動不重複
singleInstance:返回線會不一樣 在加那個模式跳到的下一個
-killProcess殺掉進程(android.os.Process,myPid());